#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>

#include <sys/stat.h>
#include <sys/types.h>

char buf[512];

int main(int argc , char* argv[], char* envp[]){

	int n;
	if(     (  n = read(0,buf,sizeof(buf)) )==0     ) {
		write(1,"nothing read\n",12);
		return 1;
	}

	//经过测试，系统原来的DEF_UMASK为0002，和csapp及网上说的0022不同
	//创建文件需要指定权限，原来open的第三个参数直接设为0，是在文件不存在时open自动创建时用的，如果设为0，那么权限就全为0，写文件就会报段错误
	
	mode_t mask = 0666;
	umask(0000);
	int fd = open("foo.txt",O_CREAT|O_RDWR ,0777);//权限不要设为0，默认参数也是0，设为0则新创建的文件任何人都没法读写，甚至程序也没法读取stat【权限设置看csapp第625页】
	
	
	if(write(fd,buf,n) != n){
		return -1;
	}

	return 0;
}
